main(){ int i=8; printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);}的结果为8 7 7 8 -7 -

来源:百度知道 编辑:UC知道 时间:2024/05/05 07:14:21
还有main(){int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
结果为9,8,8,9,-8,-9
这到底是为什么,第一题说是自右向左,但我算的就是和结果不一样,能详细说下吗?

在printf里的运算顺序是从右向左。然后等运算完了再从左向右输出

如这题先从右向左运算-i--=-8.
然后 i=7
-i++=-7
然后i=8
i--=8
然后i=7
i++=7
然后i=8
--i=7
此时i=7
最后是++i=8
然后从左向右输出
所以结果是8,7,7,8,-7,-8.

至于你分开输出的时候
++i=9
然后i=9
--i=8
然后i=8
....下面自己算

总结
i++是取i当前值。等表达式结束后对i加1
++i是取i加1后的值。
减的同理。不清楚可以再hi我